package com.gxc.string;

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * [运维工程师]采集到某产品线网运行一天产生的日志n条，现需根据日志时间先后顺序对日志进行排序，日志时间格式为H:M:S.N。
 *
 * H表示小时(0~23)
 * M表示分钟(0~59)
 * S表示秒(0~59)
 * N表示毫秒(0~999)
 * 时间可能并没有补全，也就是说，01:01:01.001也可能表示为1:1:1.1。
 *
 * 输入描述
 * 第一行输入一个整数n表示日志条数，1<=n<=100000，接下来n行输入n个时间。
 *
 * 输出描述
 * 按时间升序排序之后的时间，如果有两个时间表示的时间相同，则保持输入顺序。
 */
public class SortLog {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.nextLine();

        List<String> logs = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            logs.add(scanner.nextLine());
        }
        scanner.close();

        Collections.sort(logs, new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                return convertToMillisecond(a) - convertToMillisecond(b);
            }
        });

        for (String log : logs) {
            System.out.println(log);
        }
    }

    /* 将时间字符串转换为毫秒数 */
    public static int convertToMillisecond(String timeStr) {
        Pattern pattern = Pattern.compile("(\\d+):(\\d+):(\\d+).(\\d+)");
        Matcher matcher = pattern.matcher(timeStr);
        return matcher.find() ? ((java.lang.Integer.parseInt(matcher.group(1)) * 60 + java.lang.Integer.parseInt(matcher.group(2))) + java.lang.Integer.parseInt(matcher.group(3))) * 1000 + java.lang.Integer.parseInt(matcher.group(4)) : 0;
    }
}
